#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name：    log_process.py.py
   Author :       zyq
   CreateDate：   2024/7/18 16:19
   Remark :  日志文件管理类，创建日志文件夹和定期删除日志文件夹
-------------------------------------------------
"""

import os
import shutil

from guitesting.common.util.return_time import ReturnTime
from guitesting.config import Path
from guitesting.common.file.operation_yaml import ReadYaml


class LogProcess:
    # 获取今天的日期
    today = ReturnTime.get_time()
    conf: dict = ReadYaml().get_every_config("config")

    def get_log_dir(self):
        """
        获取当天的日志目录路径和图片目录路径，不存在则创建。

        Args:
            无。

        Returns:
            tuple: 包含两个字符串元素的元组，分别表示日志目录和图片目录的路径。

        Raises:
            Exception: 如果日志目录或图片目录已经存在，则抛出异常。

        """
        # 拼接日志目录路径
        log_dir = str(os.path.join(Path.LOGS_DIR, self.today))
        img_dir = str(os.path.join(Path.IMG_DIR, self.today))

        # 判断日志目录是否存在
        try:
            # 如果日志目录不存在
            if not os.path.isdir(log_dir):
                # 创建日志目录
                os.makedirs(log_dir)
                # 如果图片目录也不存在
                if not os.path.isdir(img_dir):
                    # 创建图片目录
                    os.makedirs(img_dir)

            # 执行删除(超出存储时间的)目录操作
            self.delect_dir()
        except FileExistsError:
            # 如果目录已经存在，则抛出异常
            raise Exception("文件夹已经存在")

        finally:
            # 无论是否发生异常，都返回日志目录和图片目录
            return log_dir, img_dir

    def delect_dir(self):
        """
        删除超过最大存储时间的日志和图片文件。

        Args:
            无。

        Returns:
            无返回值。

        """
        # 获取日志列表(图片和文件)
        floders_log = os.listdir(Path.LOGS_DIR)
        floders_img = os.listdir(Path.IMG_DIR)

        # 获取最大的日志存储时间
        max_time = int(self.today) - int(self.conf.get("LOG_TIME"))

        # 删除n天前的日志
        for floder in floders_log:
            if int(floder) < max_time:
                shutil.rmtree(os.path.join(Path.LOGS_DIR, floder))

        # 删除n天前的图片
        for floder in floders_img:
            if int(floder) < max_time:
                shutil.rmtree(os.path.join(Path.IMG_DIR, floder))


if __name__ == '__main__':
    # 测试代码
    x = LogProcess()
    x.get_log_dir()
